package com.foreknow.demo10;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * IO(输入/输出流):Input/Output
 * IO流：主要用来处理设备间数据的传输
 * Input输入流：表示对文件的读操作
 * Output输出流：表示对文件中写数据
 * 流的分类
 * 1.输入流/输出流
 * 2.字节流/字符流    凡是以InputStream或者OutputStream结尾的都是字节流
 *                   凡是以Reader或Writer结尾的都是字符流
 *      字节流：可以操作任何数据类型（文本、图片、音频、视频）
 *      字符流：只能操作纯字符的数据
 *      所有字节流的根父类：InputStream和OutputStream
 *      所有字符流的根父类：Reader和Writer
 * 3.节点流/处理流
 *      节点流：凡是直接关联到数据源的（文件）的就叫节点流。在查看文档的时候，可以根据构造器进行区别
 *      处理流：如果构造器不是直接关联数据源（文件）的，就是处理流。处理流是对节点流功能的增强
 *
 */
public class Test {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("che.jpg");//源文件
            fos = new FileOutputStream("che_new.jpg");//目标文件
            //读取一个字节
            int read = fis.read();
            //判断文件是否读取结尾
            while (read != -1){
                //将读取到的字节写到目标文件中
                fos.write(read);
                read = fis.read();
            }
            //关闭资源
            fis.close();
            fos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {

        }
    }
}
